#include <iostream>
#include <cstdio>
#include <cmath>
#define max 102
using namespace std;

//定义一个结构体存放每个鳄鱼的坐标
struct danger
{
    int x,y;
};

danger p[max]; //定义一个结构体数组来存放所有的点
bool visit[max]={false};
int num,maxlength;

//计算两个点之间的距离
double dis(danger a,danger b)
{
    return sqrt(pow((a.x-b.x),2)+pow((a.y-b.y),2));
}

//深度优先遍历
void DFS(int v)
{
    visit[v]=true;//已经走过这个点就标记一下
    if(abs(50-p[v].x)<=maxlength || abs(50-p[v].y)<=maxlength)
    {
    //如果这个点到边缘的距离是可以跳过去的
        cout<<"Yes";
        exit(0) ;//程序结束输出yes
    }
    else
    {//否则就找下一个能跳的点
        for(int i=0;i<num;i++)
        {//所有的点都遍历一遍
            if(!visit[i] && (dis(p[i],p[v])<=maxlength))
                  DFS(i);
        //如果有顶点没去过而且还可以跳过去的话就从那个点开始重新找下一个点
        }
    }
}
int main()
{
    int cou=0;
    int first[max];
    danger fish;
    cin>>num>>maxlength;
    for(int i=0;i<num;i++)
    {
        cin>>p[i].x>>p[i].y;
    }
    fish.x=fish.y=0;
    for(int i=0;i<num;i++)
    {//首先先算一下第一次能跳的点有多少个
        if(dis(p[i],fish)<=maxlength+7.5)
        {
            first[cou++]=i;
        }
    }
    if(cou==0)
    {
        cout<<"No";
        return 0;
    }
    for(int i=0;i<cou;i++)
    {
        DFS(first[i]);
    }
    cout<<"No";
}
